package session

type ScriptElementKind float64

const (
	SEKUnknown ScriptElementKind = iota
	SEKWarning

	/** predefined type (void) or keyword (class) */
	SEKKeyword

	/** top level script ast */
	SEKScriptElement

	/** module foo {} */
	SEKModuleElement

	/** class X {} */
	SEKClassElement

	/** var x 
	LocalClassElement 
	
	/** interface Y {} */
	SEKInterfaceElement
	
	/** type T 
	SEKTypeElement
	
	/** enum E */
	SEKEnumElement
	// TODO: GH#9983
	SEKEnumMemberElement

	/**
	 * Inside module and script only
	 * const v 
	 */
	SEKVariableElement

	/** Inside function */
	SEKLocalVariableElement

	/**
	 * Inside module and script only
	 * function f() { }
	 */
	SEKFunctionElement

	/** Inside function */
	SEKLocalFunctionElement

	/** class X { [public|private]* foo() {} } */
	SEKMemberFunctionElement

	/**
	 * class X { [public|private]* foo:number; }
	 * interface Y { foo:number; }
	 */
	SEKMemberVariableElement

	/** class X { constructor() { } } */
	SEKConstructorImplementationElement

	/** interface Y { ():number; } */
	SEKCallSignatureElement

	/** interface Y { []:number; } */
	SEKIndexSignatureElement

	/** interface Y { new():Y; } */
	SEKConstructSignatureElement

	/** function foo(*Y*: string) */
	SEKParameterElement

	SEKTypeParameterElement

	SEKPrimitiveType

	SEKLabel

	SEKAlias

	SEKDirectory

	SEKExternalModuleName
)


